/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.kuncipenyusunananggaran;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

/**
 *  Digunakan untuk menangani komponen kuncipenyusunananggaran.KunciPenyusunanAnggaranSalin
 * @author Dewi
 */
public class KunciPenyusunanAnggaranSalinWnd extends ClassApplicationModule {

    KunciPenyusunanAnggaranDAO dao;
    private Combobox cmbTahun;
    private Listbox lstboxPosPendapatanPopup;
    private Button btnSalin;
    private Button btnBatal;
    private Label lblTahunAnggaran;
    private Window window;
    private String tahunSkrg;
    private int tahunDefault;

    public KunciPenyusunanAnggaranSalinWnd() {
        dao = new KunciPenyusunanAnggaranDAOImpl();
    }

    public void onCreate() throws Exception {
        window = (Window) this.getRoot().getFellow("contentDiv").getFirstChild();
        lblTahunAnggaran = (Label) window.getFellow("lblTahunAnggaran");
        lstboxPosPendapatanPopup = (Listbox) getFellow("lstboxPosPendapatanPopup");
        cmbTahun = (Combobox) getFellow("cmbTahun");
        btnSalin = (Button) getFellow("btnSalin");
        tahunSkrg = lblTahunAnggaran.getValue();
        tahunDefault = (Integer.parseInt(lblTahunAnggaran.getValue()) - 1);
        loadPosPendapatan();
        loadTahunKelompokAnggaran();
    }

    /**
     * Digunakan untuk mengisikan data pos pendapatan dalam komponen lstboxPosPendapatanPopup
     * @throws Exception
     */
    public void loadPosPendapatan() throws Exception {
        lstboxPosPendapatanPopup.getItems().clear();
        String y = "";
        for (Map map : dao.getUnitKerjaAndPendapatanByTahun(tahunDefault + "")) {
            Listitem item = new Listitem();
            item.setValue(map);
            item.appendChild(new Listcell(map.get("Nama_unit_kerja").toString()));
            String revisi = "";
            if (map.get("isRevisi").toString().equalsIgnoreCase("y")) {
                revisi = "revisi";
            } else {
                revisi = "awal";
            }
            y = map.get("jenisBiaya").toString() + "-" + revisi;
            item.appendChild(new Listcell(y));
            lstboxPosPendapatanPopup.appendChild(item);
        }
    }

    /**
     * Digunakan untuk melakukan penyimpanan data kunci penyusunan anggaran
     * @throws Exception
     */
    public void btnSimpanOnClick() throws Exception {
        for (Map map : dao.getUnitKerjaAndPendapatanByTahun(tahunDefault + "")) {
            KunciPenyusunanAnggaran x = new KunciPenyusunanAnggaran();
            x.setTahunAnggaran(tahunSkrg);
            x.setKodeUnit(map.get("kodeUnit").toString());
            x.setKdJenisAnggaran(map.get("kodeJenisAnggaran").toString());
            x.setIsRevisi(map.get("isRevisi").toString());
            x.setIsDikunci("N");
            insert(x);
        }
        Messagebox.show("Data sudah disalin");
        this.detach();
    }

    public void insert(KunciPenyusunanAnggaran data) throws Exception {
        String cek = dao.cekKunciAnggaran(data);
        if (cek.compareTo("") == 0) {
            dao.insert(data);
        } else {
            dao.update(data);
        }
    }

    /**
     * Digunakan untuk mengisikan data tahun anggaran kedalam komponen cmbTahun
     * @throws Exception
     */
    public void loadTahunKelompokAnggaran() throws Exception {
        cmbTahun.getItems().clear();
        for (Map map : dao.getTahunAnggaranPendapatanUnit(lblTahunAnggaran.getValue())) {
            Comboitem item = new Comboitem();
            item.setValue(map);
            item.setLabel(map.get("tahunAnggaran").toString());
            cmbTahun.appendChild(item);
            cmbTahun.setSelectedItem(item);
        }
    }

    /**
     * Digunakan untuk mengisikan data Nama unit kerja dan jenis biaya kedalam komponen lstboxPosPendapatanPopup
     * @throws Exception
     */
    public void cmbboxTahunOnSelect() throws Exception {
        lstboxPosPendapatanPopup.getItems().clear();
        Map map = (Map) cmbTahun.getSelectedItem().getValue();
        for (Map m : dao.getUnitKerjaAndPendapatanByTahun(map.get("tahunAnggaran").toString())) {
            Listitem item = new Listitem();
            item.setValue(m);
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("Nama_unit_kerja").toString())));
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("jenisBiaya").toString())));
            lstboxPosPendapatanPopup.appendChild(item);
        }

    }

    public void lstboxPosPendapataOnSelect() {
    }

    public void btnBatalOnClick() {
        this.detach();
    }
}
